package sysinit

import (
	"beego_background_framework/utils"
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/orm"
	_ "github.com/go-sql-driver/mysql"
	"io/ioutil"
)

//初始化数据库
func InitDatabase() {
	//读取配置文件
	//数据库ip
	dbHost := beego.AppConfig.String("mysql::db_host")
	//数据库端口
	dbPort := beego.AppConfig.String("mysql::db_port")
	//数据库
	dbDatabase := beego.AppConfig.String("mysql::db_database")
	//数据库名称
	dbUsername := beego.AppConfig.String("mysql::db_username")
	//数据库密码
	dbPasword := beego.AppConfig.String("mysql::db_password")
	//数据库字符集
	dbCharset := beego.AppConfig.String("mysql::db_charset")
	//初始化数据库
	_ = orm.RegisterDriver("mysql", orm.DRMySQL)
	_ = orm.RegisterDataBase("default", "mysql", dbUsername+":"+dbPasword+"@tcp("+dbHost+":"+dbPort+")/"+dbDatabase+"?charset="+dbCharset)
	// 自动创建表 数据库别名，true为先删除表再新增，true为自动更新数据表字段
	isInstall, _ := beego.AppConfig.Bool("is_install")
	_ = orm.RunSyncdb("default", isInstall, true)
}

//初始化默认数据
func InitDefaultDatabase() {
	isInstall, _ := beego.AppConfig.Bool("is_install")
	if !isInstall {
		return
	}

	sqlByte, err := ioutil.ReadFile("cms.sql")
	if err != nil {
		beego.Error("读取cms.sql文件失败")
		return
	}
	sqlData := string(sqlByte)
	//得到文件中的SQL语句
	sqls, _ := utils.DiscardAnnotation(sqlData)
	o := orm.NewOrm()
	for _, sql := range sqls {
		//执行SQL语句
		//fmt.Println(sql)
		_, _ = o.Raw(sql).Exec()
	}
}
